package com.aco.fatureapp.model;

import com.orm.SugarRecord;

public class Impressora extends SugarRecord<Impressora> {

	private String nome;

	private String enderecoMac;

	private Boolean flgPadrao;

	private Boolean flgDisponivel;

	private TypeImpressora typeImpressora;

	private TypeFormulario typeFormulario;

	public Impressora() {
		super();
	}

	public Impressora(String nome, String enderecoMac,
			TypeImpressora typeImpressora, Boolean flgPadrao,
			Boolean flgDisponivel, TypeFormulario typeFormulario) {
		super();
		this.nome = nome;
		this.enderecoMac = enderecoMac;
		this.typeImpressora = typeImpressora;
		this.flgPadrao = flgPadrao;
		this.flgDisponivel = flgDisponivel;
		this.typeFormulario = typeFormulario;
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}
		Impressora other = (Impressora) obj;
		if (id == null) {
			if (other.id != null) {
				return false;
			}
		}
		else if (!id.equals(other.id)) {
			return false;
		}
		return true;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEnderecoMac() {
		return enderecoMac;
	}

	public void setEnderecoMac(String enderecoMac) {
		this.enderecoMac = enderecoMac;
	}

	public TypeImpressora getTypeImpressora() {
		return typeImpressora;
	}

	public void setTypeImpressora(TypeImpressora typeImpressora) {
		this.typeImpressora = typeImpressora;
	}

	public Boolean getFlgPadrao() {
		return flgPadrao;
	}

	public void setFlgPadrao(Boolean flgPadrao) {
		this.flgPadrao = flgPadrao;
	}

	public Boolean getFlgDisponivel() {
		return flgDisponivel;
	}

	public void setFlgDisponivel(Boolean flgDisponivel) {
		this.flgDisponivel = flgDisponivel;
	}

	public TypeFormulario getTypeFormulario() {
		return typeFormulario;
	}

	public void setTypeFormulario(TypeFormulario typeFormulario) {
		this.typeFormulario = typeFormulario;
	}

	public enum TypeImpressora {

		ZEBRA(1, "ZEBRA RW-420"),

		SEIKO(2, "SEIKO DPU-S445"),

		SEIKO_MPU_L465(3, "SEIKO MPU-L465"),

		LEOPARD_A7(4, "LEOPARD A7");

		private Integer codigo;

		private String nomeAmigavel;

		TypeImpressora(Integer codigo, String nomeAmigavel) {
			this.codigo = codigo;
			this.nomeAmigavel = nomeAmigavel;
		}

		public static TypeImpressora valueOf(final Integer codigo) {
			TypeImpressora result = null;

			final TypeImpressora[] values = TypeImpressora.values();

			// faz uma busca comparando os enums com a letra indicada.
			for (final TypeImpressora layout : values) {
				// se combina a letra informada com a letra do Enum, entao
				// retorna o
				// enum.
				if (layout.getCodigo() == codigo) {
					result = layout;
					break;
				}
			}
			return result;
		}

		public Integer getCodigo() {
			return codigo;
		}

		public void setCodigo(Integer codigo) {
			this.codigo = codigo;
		}

		public String getNomeAmigavel() {
			return nomeAmigavel;
		}

		public void setNomeAmigavel(String nomeAmigavel) {
			this.nomeAmigavel = nomeAmigavel;
		}

	}

	public enum TypeFormulario {
		LEOPARD(1, "IMPRESSORA LEOPARD");

		private Integer codigo;

		private String nomeAmigavel;

		TypeFormulario(Integer codigo, String nomeAmigavel) {
			this.codigo = codigo;
			this.nomeAmigavel = nomeAmigavel;
		}

		public static TypeFormulario valueOf(final Integer codigo) {
			TypeFormulario result = null;

			final TypeFormulario[] values = TypeFormulario.values();

			// faz uma busca comparando os enums com a letra indicada.
			for (final TypeFormulario layout : values) {
				// se combina a letra informada com a letra do Enum, entao
				// retorna o
				// enum.
				if (layout.getCodigo() == codigo) {
					result = layout;
					break;
				}
			}
			return result;
		}

		public Integer getCodigo() {
			return codigo;
		}

		public void setCodigo(Integer codigo) {
			this.codigo = codigo;
		}

		public String getNomeAmigavel() {
			return nomeAmigavel;
		}

		public void setNomeAmigavel(String nomeAmigavel) {
			this.nomeAmigavel = nomeAmigavel;
		}

	}
}
